package inge_soft.gestoriusNuevo.business.controller.validation;

import java.util.Map;

import org.zkoss.bind.Property;
import org.zkoss.bind.ValidationContext;
import org.zkoss.bind.validator.AbstractValidator;

public class ValidadorCrearModificarInstitucion extends AbstractValidator {

	public void validate(ValidationContext contexto) {

		// obtengo las "propiedades" cargadas en la vista
		Map<String,Property> beanProps = contexto.getProperties(contexto.getProperty().getBase());

		validarRazonSocial(contexto, (String) beanProps.get("razonSocial").getValue());
		validarNombreFantasia(contexto, (String) beanProps.get("nombreFantasia").getValue());
		validarCuit(contexto, (String) beanProps.get("cuit").getValue());
	}

	private void validarRazonSocial(ValidationContext contexto, String razonSocial) {
		if (razonSocial == null || razonSocial.isEmpty()) {
			this.addInvalidMessage(contexto, "razonSocial", "Recuerde ingresar Razon Social");
		}
	}

	private void validarNombreFantasia(ValidationContext contexto, String nombreFantasia) {
		if (nombreFantasia == null || nombreFantasia.isEmpty()) {
			this.addInvalidMessage(contexto, "nombreFantasia", "Recuerde ingresar Nombre de Fantasia");
		}
	}

	private void validarCuit(ValidationContext contexto, String cuit) {
		if (cuit == null || cuit.isEmpty() || !esValidoCuit(cuit)) {
			this.addInvalidMessage(contexto, "cuit", "Asegurese de ingresar un cuit en formato XX-XXXXXXXX-X");
		}
	}
	
	private boolean esValidoCuit(String cuit) {
		// pagina para buscar expresiones regulares: http://www.regxlib.com
		return cuit.matches("^[0-9]{2}-[0-9]{8}-[0-9]$");
	}
	
	
}
